package ar.edu.utn.frba.disenio.gui;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.layout.HorizontalLayout;
import org.uqbar.arena.layout.VerticalLayout;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Label;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.widgets.tables.Column;
import org.uqbar.arena.widgets.tables.Table;
import org.uqbar.arena.windows.SimpleWindow;
import org.uqbar.arena.windows.WindowOwner;
import ar.edu.utn.frba.disenio.model.Asiento;
import ar.edu.utn.frba.disenio.model.Usuario;

@SuppressWarnings("serial")
public abstract class AsientosWindow extends SimpleWindow<Usuario> {

	public abstract void getMensajeOperacion(Panel unPanel);
	protected abstract Table<Asiento> crearTabla(Panel unPanel);
	
	public AsientosWindow(WindowOwner parent, Usuario model) {
		super(parent, model);
	}
	
	@Override
	protected void createFormPanel(Panel unPanel) {
		this.setTitle("Aterrizar.com");
		unPanel.setLayout(new VerticalLayout());

    	this.getMensajeOperacion(unPanel);
        
        new Label(unPanel).bindValueToProperty("nombre");
        
		Table<Asiento> tablaDeAsientos = this.crearTabla(unPanel);

		new Column<Asiento>(tablaDeAsientos)
			.setTitle("Salida")
			.setFixedSize(75)
			.bindContentsToProperty("fechaSalida")
			.bindContentsToTransformer(new FechaTransformer());

		new Column<Asiento>(tablaDeAsientos)
			.setTitle("Aerolinea")
			.setFixedSize(75)
			.bindContentsToProperty("aerolinea")
			.bindContentsToTransformer(new AerolineaTransformer());
	
		new Column<Asiento>(tablaDeAsientos)
			.setTitle("Vuelo")
			.setFixedSize(70)
			.bindContentsToProperty("codigoDeVuelo");
	
		new Column<Asiento>(tablaDeAsientos)
			.setTitle("Asiento")
			.setFixedSize(65)
			.bindContentsToProperty("numeroDeAsiento")
			.bindContentsToTransformer(new NumeroAsientoTransformer());
	
		new Column<Asiento>(tablaDeAsientos)
			.setTitle("Precio")
			.setFixedSize(55)
			.bindContentsToProperty("precioBase")
			.bindContentsToTransformer(new BigDecimalTransformer());
		
		new Button(unPanel)
			.setCaption("Cerrar")
			.onClick(new MessageSend(this, "close"));
	}

	protected void mensajeInicial(){
    	Panel unPanel = new Panel(this);
    	
    	unPanel.setLayout(new HorizontalLayout());
    	
    	this.getMensajeOperacion(unPanel);
        
        new Label(unPanel).bindValueToProperty("nombre");
    }
	
	@Override
	protected void addActions(Panel arg0) {
		
	}
}
